<?php
namespace app\admin\controller;
use app\admin\controller\Base;
use think\Db;
use think\Request;

class Role extends Base
{
    //角色列表页
    public function index()
    {
        $this->assign('title', '角色列表');
        //查询角色表中信息
        $list = db('role')->select();
        //发送数据
        $this->assign('list', $list);
        return $this->fetch('role/index');
    }
    //角色添加页面加载
    public function add()
    {
        $this->assign('title', '角色添加');
        return $this->fetch('role/add');
    }
    //执行角色添加操作
    public function insert()
    {
        //得到表单提交过来的数据
        $data = [
                'role_name'=>input('role_name'),
                'explain'=>input('explain'),
                'r_status'=>input('rec'),
        ];
        if(db('role')->insert($data)){
            return $this->success('添加角色成功！','role/index');
        }else{
            return $this->error('添加角色失败!');
        }
    }
    //加载后台角色编辑页面
    public function edit()
    {
        $id = input('id');
        $list = db('role')->select($id);
        $this->assign('list', $list[0]);
        $this->assign('title', "角色编辑");
        return $this->fetch('role/edit');
    }
    //执行角色编辑操作
    public function edited()
    {
        $id = input('id');
        //查询出原管理员信息
        $admins=db('role')->find($id);
        //得到修改后的信息
        $data = [
                'id'=>input('id'),
                'role_name'=>input('role_name'),
                'explain'=>input('explain'),
                'r_status'=>input('rec')
        ];
        if(db('role')->update($data)){
            $this->success('修改角色成功！','role/index');
        }else{
            $this->error('修改角色失败！');
        }
    }
    //删除用户操作
    public function del()
    {
        $id = input('id');
        
        if(db('role')->delete(input('id'))){
            $this->success('删除角色成功！','role/index');
        }else{
            $this->error('删除角色失败！');
        }
    }
    //权限浏览(分配权限操作按钮)
    public function authlist()
    {
        
        $this->assign('title', '权限分配');
        //得到当前角色的id
        $id = input('id');
        //查询当前角色信息,用于分配权限
        $role = db('role')->find($id);
        //查询所有权限
        $auths = db('auth')->paginate(8);
        //将角色信息发送
        $this->assign('auths', $auths);
        //查询角色的权限信息
        $sql = "select node from role r join role_auth ra on r.id = ra.s_role_id join auth a on ra.auth_id = a.id where r.id = ".$role['id'];
        $auth = Db::query($sql);
        // var_dump($auth);
        // die;
        if (!empty($auth)) {
            foreach ($auth as $k => $v) {
                $arr['auth'][] = $v['node'];
            }
        } else {
            $arr['auth'] = false;
        }
        /*var_dump($auths, $auth, $arr);
        die();*/
        //将管理员拥有的角色发送过去
        $this->assign('arr', $arr);
        $this->assign('role', $role);
        return $this->fetch('role/list');
    }
    //保存角色权限
    public function saveauth()
    {
        if (session('admin_user')['id'] != 1) {
            $this->error('没有分配权限!');
        }
        $result = Request::instance()->post();
        // var_dump($result);
        // die();
        //判读必须选择一个权限
        /*if(empty($result['auth'])){
            $this->error("请选择一个权限！");
        }*/
        // die();
        //得到当前角色的id
        // var_dump($result);
        $rid = $result['id'];
        // die;
        //清除当前管理员所有的角色信息，避免重复添加
        Db::table('role_auth')->where('s_role_id', $rid)->delete();
        if (!empty($result['auth'])) {
            foreach($result['auth'] as $v){
                        $data['s_role_id'] = $rid;
                        $data['auth_id'] = $v;
                        //执行添加
                        db('role_auth')->insert($data);
            }
        }
        $this->success("权限分配成功", 'role/index');
        
    }
}